package game.editer.ui;

import game.editer.AttrEditer.AttrData;

class InputCreater {
	/**
	 * 统一创建输入组件实现
	 * @param attr 
	 * @param onAttributeChange 
	 * @return BaseAttributeInput
	 */
	public static function create(attr:AttrData, onAttributeChange:IAttributeInput->Void):BaseAttributeInput {
		var input:BaseAttributeInput = switch attr.type {
			case String:
				new TitleTextInput(attr.text, attr.key, onAttributeChange);
			case Number:
				new NumberInput(attr.text, attr.key, onAttributeChange);
			case Boolean:
				new BooleanInput(attr.text, attr.key, onAttributeChange);
			case Collision:
				new CollisionInput(attr.text, attr.key, onAttributeChange);
			case HitData:
				new HitDataInput(attr.text, attr.key, onAttributeChange);
			case KeyboardInput:
				new KeyInput(attr.text, attr.key, onAttributeChange);
			case EffectInput:
				new EffectSelectInput(attr.text, attr.key, onAttributeChange);
			case Object:
				new ObjectInput(attr.text, attr.key, onAttributeChange).bindAttrData(cast attr.attr);
			case Timeline:
				new TimelineInput(attr.text, attr.key, onAttributeChange);
			case Eumes:
				new DownDropListViewInput(attr.text, attr.key, onAttributeChange).bindAttrData(attr);
			case Sound:
				new SoundInput(attr.text, attr.key, onAttributeChange);
		}
		return input;
	}
}
